home *** CD-ROM | disk | FTP | other *** search
Wrap
10 goto START 20 GETOLD: 30 for index=0 to 15:poke contrl,26:poke contrl+2,0:poke contrl+6,2:poke intin,index:poke intin+2,0:vdisys(0) 40 old%(index,0)=peek(intout+2):old%(index,1)=peek(intout+4):old%(index,2)=peek(intout+6):next index 50 return:'----------------------------------------------------------------- 60 GOWHITE: 70 poke contrl,14:poke contrl+2,0:poke contrl+6,4:poke intin,index 80 poke intin+2,old%(0,0):poke intin+4,old%(0,1):poke intin+6,old%(0,2):vdisys(0) 90 return:'----------------------------------------------------------------- 100 GOBLACK: 110 poke contrl,14:poke contrl+2,0:poke contrl+6,4:poke intin,index 120 poke intin+2,old%(1,0):poke intin+4,old%(1,1):poke intin+6,old%(1,2):vdisys(0) 130 return:'----------------------------------------------------------------- 140 SETOLD: 150 for index=2 to 15 160 poke contrl,14:poke contrl+2,0:poke contrl+6,4:poke intin,index 170 poke intin+2,old%(index,0):poke intin+4,old%(index,1) 180 poke intin+6,old%(index,2):vdisys(0):next index 190 return:'----------------------------------------------------------------- 200 EXTRALOOP: 210 text$="[0][| EXTRA TOOLS |][erase|cycle|finish]"+chr$(0)+chr$(0) 220 gosub KEYBOX 230 if key=1 then gosub ERASELOOP:gosub SETCOLOR:p=p+1:gosub SETFILL:return 240 if key=2 then gosub CYCLELOOP:return 250 end:'------------------------------------------------------------------- 260 CYCLELOOP: 270 for index=2 TO 15:gosub GOWHITE:next index 280 index=15:loop=370 290 while loop 300 gosub GOWHITE:if index=15 then index=1 310 index=index+1:gosub GOBLACK:loop=loop-1 320 for pause=0 to 500:next pause 330 wend 340 gosub SETOLD:gosub SHOWCURSOR 350 return:'---------------------------------------------------------------- 360 SETHEIGHT: 370 poke contrl,107:poke contrl+2,0:poke contrl+6,1:poke intin,height:vdisys(0) 380 return:'---------------------------------------------------------------- 390 PRINTTXT: 400 for i=1 to len(a$):poke intin+(i-1)*2,asc(mid$(a$,i,1)):next:poke intin+(i-1)*2,0 410 poke contrl,8:poke contrl+2,1:poke contrl+6,len(a$)+1:poke ptsin,dx:poke ptsin+2,dy:vdisys(0) 420 return:'----------------------------------------------------------------- 430 POLYLINE: 440 poke contrl,9:poke contrl+2,max!+1:poke contrl+6,0 450 for p=0 to max!:poke ptsin+(4*p),newpoint%(p,0):poke ptsin+((4*p)+2),newpoint%(p,1):next:vdisys(0) 460 return:'----------------------------------------------------------------- 470 SETMODE: 480 poke contrl,32:poke contrl+2,0:poke contrl+6,1:poke intin,mode:vdisys(0) 490 return:'----------------------------------------------------------------- 500 DRAWSHAPE: 510 mode=2:gosub SETMODE 520 gosub LOADSHAPE:gosub SETMATRIX:gosub SPINSHAPE:gosub ZOOMSHAPE:gosub MOVESHAPE 530 gosub SETFILL:gosub FINALSHAPE:gosub HIDECURSOR:gosub POLYLINE:gosub SHOWCURSOR:mode=1:gosub SETMODE 540 return:'---------------------------------------------------------------- 550 CURSORFORM: 560 poke gintin,form:poke addrin,addrout:gemsys(78) 570 return:'--------------------------------------------------------------- 580 FINALSHAPE: 590 for top=0 to max!: for side=0 to 2:newpoint%(top,side)=0 600 for idem=0 to 2:newpoint%(top,side)=newpoint%(top,side)+point%(top,idem)*clr(idem,side):next idem,side,top 610 return:'--------------------------------------------------------------- 620 SETMATRIX: 630 for top=0 to 2: for side=0 to 2:clr(top,side)=abs(top=side):next side,top 640 return:'--------------------------------------------------------------- 650 SETBUFFER: 660 for top=0 to 2:for side=0 to 2:buffer(top,side)=abs(top=side):next side,top 670 return:'--------------------------------------------------------------- 680 FINALMATRIX: 690 for top=0 to 2:for side=0 to 2:fin(top,side)=clr(top,side):next side,top 700 for top=0 to 2:for side=0 to 2:clr(top,side)=0:for idem=0 to 2 710 clr(top,side)=clr(top,side)+fin(top,idem)*buffer(idem,side):next idem,side,top 720 return:'--------------------------------------------------------------- 730 MOVESHAPE: 740 gosub SETBUFFER:buffer(2,0)=xt:buffer(2,1)=yt:goto FINALMATRIX 750 '---------------------------------------------------------------------- 760 ZOOMSHAPE: 770 gosub SETBUFFER:xzom=xzom-(xzom=0):yzom=yzom-(yzom=0):buffer(0,0)=xzom:buffer(1,1)=yzom:goto FINALMATRIX 780 '---------------------------------------------------------------------- 790 SPINSHAPE: 800 gosub SETBUFFER:angle=rotate/360*2*3.14159265 810 buffer(0,0)=cos(angle):buffer(0,1)=sin(angle)/1.23 820 buffer(1,0)=-sin(angle)*1.23:buffer(1,1)=cos(angle) 830 goto FINALMATRIX 840 '--------------------------------------------------------------------- 850 LOADSHAPE: 860 restore 870 read shape$,max!:for idem=0 to max!:read point%(idem,0),point%(idem,1) 880 point%(idem,2)=1:next idem:on abs(shape$<>name$) goto 870 890 return:'------------------------------------------------------------- 900 MANLOOP: 910 flag=1:gosub SETCLIP:bxo=197:form=4:gosub CURSORFORM 920 gosub SAMPLEBUTTON 930 if pstatus <1 or y<70 then 920 940 xt=x:yt=y 950 form=2:gosub CURSORFORM:name$="man":gosub DRAWSHAPE:flag=0:gosub SETCLIP 960 color 1,1,1,1,2:x=6:y=29:x2=x+27:y2=y+24:gosub FILLBOX:gosub SETCOLOR 970 return:'------------------------------------------------------------- 980 WHALELOOP: 990 flag=1:gosub SETCLIP:bxo=235:form=4:gosub CURSORFORM 1000 gosub SAMPLEBUTTON 1010 if pstatus <1 or y<70 then 1000 1020 xt=x:yt=y 1030 form=2:gosub CURSORFORM:name$="whale":gosub DRAWSHAPE:flag=0:gosub SETCLIP 1040 color 1,1,1,1,2:x=6:y=29:x2=x+27:y2=y+24:gosub FILLBOX:gosub SETCOLOR 1050 return:'------------------------------------------------------------- 1060 BOATLOOP: 1070 flag=1:gosub SETCLIP:bxo=272:form=4:gosub CURSORFORM 1080 gosub SAMPLEBUTTON 1090 if pstatus <1 or y<70 then 1080 1100 xt=x:yt=y 1110 form=2:gosub CURSORFORM:name$="boat":gosub DRAWSHAPE:flag=0:gosub SETCLIP 1120 color 1,1,1,1,2:x=6:y=29:x2=x+27:y2=y+24:gosub FILLBOX:gosub SETCOLOR 1130 return:'------------------------------------------------------------- 1140 ERASELOOP: 1150 gosub HIDECURSOR:gosub GROWBOX:x=1:y=71:x2=304:y2=188:color 1,0,1,1,1 1160 gosub FILLBOX:gosub SHOWCURSOR:for t=0 to 300:next 1170 return:'------------------------------------------------------------- 1180 ZOOMLOOP: 1190 z=z+1:if z>4 then z=1:gosub SAMPLEBUTTON:if pstatus<1 then return 1200 height=13:gosub SETHEIGHT:gosub HIDECURSOR 1210 a$=str$(z):dx=82:dy=48:gosub PRINTTXT 1220 height=9:gosub SETHEIGHT:gosub SHOWCURSOR:for t=0 to 300:next 1230 xzom=z/2:yzom=z/2 1240 return:'------------------------------------------------------------- 1250 ALINE: 1260 poke contrl,6:poke contrl+2,2:poke contrl+6,0:poke ptsin,x1 1270 poke ptsin+2,y1:poke ptsin+4,x2:poke ptsin+6,y2:vdisys(0) 1280 return 1290 SPINLOOP: 1300 s=s+1:if s>12then s=1:gosub SAMPLEBUTTON:if pstatus<1 then return 1310 height=13:gosub SETHEIGHT:gosub HIDECURSOR 1320 a$=str$(s):dx=118:dy=48:gosub PRINTTXT 1330 height=9:gosub SETHEIGHT:gosub SHOWCURSOR:for t=0 to 300:next 1340 rotate=s*30 1350 return:'------------------------------------------------------------- 1360 PATTERNLOOP: 1370 color 1,1,1,p,2:p=p+1:if p>23 then p=0:gosub SAMPLEBUTTON:if pstatus <1 then return 1380 x=6:y=29:gosub HIDECURSOR:X2=X+27:Y2=Y+24:gosub FILLBOX:gosub SHOWCURSOR:FOR t=0 to 300:next:gosub SETCOLOR:gosub SETFILL 1390 for pause=0 to 500:next pause 1400 return:'------------------------------------------------------------- 1410 SETFILL: 1420 poke contrl,23:poke contrl+2,0:poke contrl+6,1:poke intin,2:vdisys(0) 1430 poke contrl,24:poke contrl+2,0:poke contrl+6,1:poke intin,p-1:vdisys(0) 1440 return:'------------------------------------------------------------- 1450 COLORLOOP: 1460 cl=cl+1:if cl>15 then cl=2:gosub SAMPLEBUTTON:if pstatus<1 then return 1470 color 1,cl,1,1,1:x=44:y=29:gosub HIDECURSOR:X2=X+27:Y2=Y+24:gosub FILLBOX:gosub SETCOLOR:for t=0 to 300:next:p=p+1:gosub SETFILL 1480 if peek(systab)<4 then mode=2:gosub SETMODE:color 0:a$=str$(cl):dy=36:dx=44:gosub PRINTTXT:mode=1:gosub SETMODE:color 1 1490 gosub SHOWCURSOR:return:'-------------------------------------------------- 1500 SETCOLOR: 1510 poke contrl,25:poke contrl+2,0:poke contrl+6,1:poke intin,cl:vdisys(0) 1520 return:'--------------------------------------------------------------- 1530 SAMPLEBUTTON: 1540 poke contrl,124:poke contrl+2,0:poke contrl+6,0:vdisys(0) 1550 pstatus=peek(intout):x=peek(ptsout):y=peek(ptsout+2) 1560 return:'--------------------------------------------------------------- 1570 SHOWCURSOR: 1580 poke contrl,122:poke contrl+2,0:poke contrl+6,1:poke intin,0:vdisys(0) 1590 return:'--------------------------------------------------------------- 1600 HIDECURSOR: 1610 poke contrl,123:poke contrl+2,0:poke contrl+6,0:vdisys(0) 1620 return:'--------------------------------------------------------------- 1630 ROUNDSQ: 1640 color 1,0,1,1,1 1650 poke contrl,11:poke contrl+2,2:poke contrl+6,0:poke contrl+10,9 1660 poke ptsin,cx:poke ptsin+2,cy:poke ptsin+4,cx+33:poke ptsin+6,cy+30:vdisys(0) 1670 return:'--------------------------------------------------------------- 1680 GBARRAY: 1690 a#=gb:control=peek(a#):global=peek(a#+4):gintin=peek(a#+8):gintout=peek(a#+12):addrin=peek(a#+16):addrout=peek(a#+20) 1700 return:'--------------------------------------------------------------- 1710 SETCLIP: 1720 poke contrl,129:poke contrl+2,2:poke contrl+6,1 1730 poke intin,flag:poke ptsin,1:poke ptsin+2,71:poke ptsin+4,304:poke ptsin+6,188:vdisys(0) 1740 return:'--------------------------------------------------------------- 1750 KEYBOX: 1760 text$=text$+chr$(0)+chr$(0) 1770 a#=gb:gintin=peek(a#+8):gintout=peek(a#+12) 1780 n#=peek(a#+16):poke gintin,0 1790 b#=varptr(text$) 1800 def seg=0:c#=peek(b#) 1810 poke n#,c# 1820 gemsys(52) 1830 key=peek(gintout) 1840 gosub SHOWCURSOR 1850 return:'------------------------------------------------------------- 1860 SETWINDOW: 1870 '********************* get work stroage of window 1880 poke gintin,0 1890 poke gintin+2,4 1900 gemsys(104): 'WIND_GET 1910 xpos=peek(gintout+2) 1920 ypos=peek(gintout+4) 1930 wide= peek(gintout+6) 1940 high= peek(gintout+8) 1950 '******************* window create w/ name,close,full,move,size 1960 poke gintin,33 1970 poke gintin+2,xpos 1980 poke gintin+4,ypos 1990 poke gintin+6,wide 2000 poke gintin+8,high 2010 gemsys(100): 'WIND_CREATE 2020 wihand= peek(gintout) 2030 '***************** set window border and title 2040 poke gintin,wihand 2050 poke gintin+2,2 2060 s#=gintin+4 2070 t#=varptr(title$):def seg=0:r#=peek(t#):'LDW specific varptr 2080 poke s#,r# 2090 gemsys(105): 'WIND_SET 2100 '***************** open window 2110 poke gintin,wihand 2120 poke gintin+2,xpos 2130 poke gintin+4,ypos 2140 poke gintin+6,wide 2150 poke gintin+8,high 2160 gemsys(101): 'WIND_OPEN 2170 return:'------------------------------------------------------------ 2180 GROWBOX: 2190 poke gintin+0,155:poke gintin+2,24:poke gintin+4,50:poke gintin+6,45 2200 poke gintin+8,2:poke gintin+10,67:poke gintin+12,304:poke gintin+14,132:gemsys(73) 2210 return:'------------------------------------------------------------- 2220 FILLBOX: 2230 poke contrl,114:poke contrl+2,2:poke contrl+6,0:poke ptsin,x 2240 poke ptsin+2,y :poke ptsin+4,x2:poke ptsin+6,y2:vdisys(1) 2250 return:'-------------------------------------------------------------- 2260 SETEFFECTS: 2270 poke contrl,106:poke contrl+2,0:poke contrl+6,1:poke intin,effect:vdisys(0) 2280 return:'-------------------------------------------------------------- 2290 MUSIC: 2300 wave 7,7,11,30,0 2310 read vol,note,octave,dur:for v=1 to 3:sound v,vol+4,note,octave-v,dur/2:next 2320 return:'-------------------------------------------- 2330 START: 2331 pk=peek(systab):if pk=4 then goto 2340 2332 text$="[3][|ROCK,SCISSOR,PAPER is intended| to run in low resolution][I'll change]"+chr$(0)+chr$(0) 2333 gosub KEYBOX:end 2340 fullw 2:clearw 2 2350 gosub GBARRAY:title$=" ST Stamp Pad "+chr$(0)+chr$(0):gosub SETWINDOW 2360 restore MUSICDATA 2370 for count=0 to 7:gosub MUSIC:next 2380 ' 2390 dim point%(128,2),newpoint%(128,2),buffer(2,2),clr(2,2),fin(2,2),old%(16,3) 2400 p=1:cl=2:cy=26:c=1:z=1:s=12:dx=4:dy=69 2410 form=2:gosub CURSORFORM 2420 gosub GETOLD:restore MUSICDATA 2430 x1=0:y1=62:x2=308:y2=62:gosub ALINE 2440 for x=20 to 300 step 20:x1=x:y1=22:x2=x-20:y2=62:gosub ALINE:color 1,c,1,1,1:fill x-5,26:c=c+1:gosub MUSIC:if c=8then restore MUSICDATA:if c>15 then c=1:next 2450 restore MUSICDATA 2460 x1=0:y1=70:x2=308:y2=70:gosub ALINE:color 1,c:fill 302,26 2470 for cx=3 to 304 step 38:gosub ROUNDSQ:gosub MUSIC:next 2480 a$=" FILL COLOR ZOOM SPIN EXTRA MAN WHALE BOAT" 2490 restore MUSICDATA: gosub MUSIC 2500 height=3:gosub SETHEIGHT:gosub PRINTTXT:height=9:gosub SETHEIGHT 2510 gosub MUSIC 2520 color 1,1,1,p,2:x=6:y=29:x2=x+27:y2=y+24:gosub FILLBOX 2530 gosub MUSIC 2540 color 1,2,1,1,1:x=44:y=29:x2=x+27:y2=y+24:gosub FILLBOX 2550 if peek(systab)<4 then mode=2:gosub SETMODE:color 0:a$="2":dy=36:dx=44:gosub PRINTTXT:mode=1:gosub SETMODE:color 1 2560 gosub MUSIC 2570 gosub 1200:height=13:gosub SETHEIGHT:gosub HIDECURSOR 2580 a$=str$(z):dx=82:dy=48:gosub PRINTTXT:gosub MUSIC 2590 a$=str$(s):dx=118:dy=48:gosub PRINTTXT:gosub MUSIC 2600 a$=chr$(14)+chr$(15):dx=164:dy=48:gosub PRINTTXT:gosub MUSIC 2610 gosub SHOWCURSOR:height=9:gosub SETHEIGHT 2620 color 1,1,1:gosub SETFILL 2630 xt=210:yt=41:name$="man":gosub DRAWSHAPE 2640 restore MUSICDATA:gosub MUSIC 2650 xt=249:yt=41:name$="whale":gosub DRAWSHAPE 2660 restore MUSICDATA:gosub MUSIC 2670 xt=286:yt=41:name$="boat":gosub DRAWSHAPE 2680 restore MUSICDATA:gosub MUSIC 2690 sound 1,0,0,0,0:sound 2,0,0,0,0:sound 3,0,0,0,0:wave 0,0,0,0,0 2700 form=0:gosub CURSORFORM:color 1,2,1:gosub ERASELOOP 2710 text$="[0][|STSP by RG Geiger|(c)ST Applications|a software toy for | low resolution ][ begin | help ]"+chr$(0)+chr$(0):gosub KEYBOX 2720 if key=2 then gosub HELP 2730 ' 2740 MAINLOOP: 2750 gosub SAMPLEBUTTON:box=int(x/38)+1 2760 if pstatus<1 or y>40 then goto MAINLOOP 2770 form=2:gosub CURSORFORM 2780 on box gosub PATTERNLOOP,COLORLOOP,ZOOMLOOP,SPINLOOP,EXTRALOOP,MANLOOP,WHALELOOP,BOATLOOP 2790 form=0:gosub CURSORFORM 2800 goto MAINLOOP 2810 '------------------------------------------------------------------ 2820 HELP: 2830 effect=1:gosub SETEFFECTS 2840 height=3:gosub SETHEIGHT:dx=2:dy=76:gosub HIDECURSOR 2850 restore TEXTDATA:for times=0 to 18:read h$ 2860 a$=h$:gosub PRINTTXT:dy=dy+6:next times 2870 height=9:gosub SETHEIGHT:effect=0:gosub SETEFFECTS 2880 gosub SHOWCURSOR:for pause=0 to 32000:next 2890 text$="[0][|FINISHED? ][Yes|No]"+chr$(0)+chr$(0) 2900 gosub KEYBOX 2910 if key=1 then gosub ERASELOOP:color 1,2,1:return 2920 goto 2880 2930 SHAPEDATA: 2940 data "whale",30,-28,-24,-20,-22,-10,-24,-14,-20,-18,-14,-21,-2,-19,4,-16,-5,-11,-12,-4,-16,7,-16,18,-13,23,-7,26,-1,26,8,22,16,19,13,14,10,8,9,4,13,4,16,8,22,14,24,6,26,-18,23,-23,14,-28,6,-26,-4,-23,-12,-24,-18,-28,-24 2950 data "man",30,-4,-30,4,-30,8,-26,8,-22,4,-18,4,-15,13,-12,13,9,10,9,10,-7,8,-7,8,26,12,26,12,30,2,30,2,7,-2,7,-2,30,-12,30,-12,26,-8,26,-8,-7,-10,-7,-10,8,-13,8,-13,-12,-4,-15,-4,-18,-8,-22,-8,-26,-4,-30 2960 data "boat",25,-5,-28,-3,-28,-3,-5,11,-6,12,2,19,-1,25,-5,24,10,20,20,12,18,5,15,4,18,0,20,-9,18,-8,19,-11,21,-20,17,-21,19,-22,20,-24,19,-28,11,-16,10,-6,8,-6,-5,-5,-5,-5,-28 2970 TEXTDATA: 2980 data "The COMPILED version of STAMP PAD uses the mouse." 2990 data " To Selct an Option or Shape Square point cursor " 3000 data " and Click a button." 3010 data " " 3020 data " " 3030 data " " 3040 data " " 3050 data " " 3060 data " [FILL] - BUTTON will cycle avaliable PATTERNS" 3070 data " [COLOR] - BUTTON will cycle avaliable COLORS" 3080 data " [ZOOM] - BUTTON will cycle a SIZE from 1 to 4" 3090 data " [SPIN] - BUTTON will cycle from 1- 12 O'Clock" 3100 data " [EXTRA] - 3 TOOLS [Erase][Cycle COLORS][End]" 3110 data " [MAN} - BUTTON activates STAMP for printing " 3120 data " [WHALE] - BUTTON activates STAMP for printing" 3130 data " [BOAT] - BUTTON activates STAMP for printing" 3140 data " " 3150 data "* ALWAYS reset FILL after stamping a shape to the" 3160 data " Work Area!!" 3170 MUSICDATA: 3180 data 7,6,6,50, 7,1,6,50, 7,4,6,50, 7,11,5,25, 7,11,5,25, 7,1,6,75, 7,4,6,25 3190 data 7,6,6,200 ə